perm filename PIXTS4.SAI[VIS,HPM] blob
sn#147478 filedate 1975-02-21 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "PIXTS4"
C00015 ENDMK
C⊗;
BEGIN "PIXTS4"
REQUIRE "VIXNIC.SAI[VIS,HPM]" SOURCE_FILE;
REQUIRE "WIXNIC.SAI[VIS,HPM]" SOURCE_FILE;
INTEGER SIZE0,SIZE1,SIZE2,SIZE3,SIZE4,W,CAMERA,CHN,WID,HIG,IAV,BIT;
BOOLEAN SYNA,SAME;
STRING LASTI,FN1,CAMN;
REQUIRE "⊂⊃<>" DELIMITERS;
DEFINE BOX(X1,Y1,X2,Y2)=
⊂ IF SYNA THEN
BEGIN
LINE(X1,Y1,X2,Y1);
LINE(X2,Y1,X2,Y2);
LINE(X2,Y2,X1,Y2);
LINE(X1,Y2,X1,Y1);
END
ELSE
BEGIN
DRKEN;
RECTAN(X1,Y1,X2,Y2);
LITEN;
RECTAN((3*(X1)+X2)/4,(3*(Y1)+Y2)/4,(X1+3*(X2))/4,(Y1+3*(Y2))/4);
END
⊃;
DEFINE BOX1(X1,Y1,X2,Y2)=
⊂ BEGIN
LITEN;
LINE(X1,Y1,X2,Y1);
LINE(X2,Y1,X2,Y2);
LINE(X2,Y2,X1,Y2);
LINE(X1,Y2,X1,Y1);
END
⊃;
OUTSTR("CAMERA NUMBER:"); CAMERA←CVD(CAMN←INCHWL) MOD 4;
IF LENGTH(CAMN)=0 THEN CAMERA←-1;
OUTSTR("WINDOW SIZE:"); W←CVD(INCHWL);
OUTSTR("USE SYNTHESIZER?"); SYNA←(INCHWL LAND '137)="Y";
OUTSTR("SAME PICTURE?"); SAME←(INCHWL LAND '137)="Y";
IF CAMERA≥0 THEN
BEGIN
WID←HIG←256; BIT←4;
SIZE0←PIXDIM(HIG,WID,BIT);
OUTSTR("SIZE= "&CVS(SIZE0)&'15&'12);
END
ELSE
BEGIN
OUTSTR("FILE 1:"); FN1←INCHWL;
SIZE0←PFLDIM(FN1);
BEGIN
INTEGER ARRAY T[0:SIZE0-1];
GETPFL(FN1,T[0]);
HIG←T[PCLN];
WID←T[LNBY];
BIT←T[BYBI];
END;
END;
SIZE1←PIXDIM(HIG%2,WID%2,(BIT+2) MIN 10);
SIZE2←PIXDIM(HIG%4,WID%4,(BIT+4) MIN 10);
SIZE3←PIXDIM(HIG%8,WID%8,(BIT+6) MIN 10);
SIZE4←PIXDIM(HIG%16,WID%16,(BIT+8) MIN 10);
BEGIN
INTEGER ARRAY PA0,PB0[0:SIZE0-1],
PA1,PB1[0:SIZE1-1],
PA2,PB2[0:SIZE2-1],
PA3,PB3[0:SIZE3-1],
PA4,PB4[0:SIZE4-1];
INTEGER I,J,K;
IF CAMERA≥0 THEN
BEGIN
MAKPIX(HIG,WID,4,PA0[0]);
MAKPIX(HIG,WID,4,PB0[0]);
OUTSTR("READING ");
CAMPIX(CAMERA,2,2,1,8,PA0[0]);
IF CAMERA≠0 THEN BEGIN OUTSTR("HO HUM"); INCHWL; END;
IF ¬SAME THEN CAMPIX(CAMERA,2,2,1,8,PB0[0]) ELSE COPPIC(PA0[0],PB0[0]);
OUTSTR("DONE"&'15&'12);
END
ELSE
BEGIN
GETPFL(FN1,PA0[0]);
IF ¬SAME THEN
BEGIN
OUTSTR("FILE 2:");
GETPFL(INCHWL,PB0[0])
END
ELSE COPPIC(PA0[0],PB0[0]);
END;
HAFPIC(PA0[0],PA1[0],10); HAFPIC(PB0[0],PB1[0],10);
HAFPIC(PA1[0],PA2[0],10); HAFPIC(PB1[0],PB2[0],10);
HAFPIC(PA2[0],PA3[0],10); HAFPIC(PB2[0],PB3[0],10);
HAFPIC(PA3[0],PA4[0],10); HAFPIC(PB3[0],PB4[0],10);
WID←PA0[LNBY]; HIG←PA0[PCLN];
OUTSTR("WID "&CVS(WID)&" HIG "&CVS(HIG)&'15&'12);
IF ¬SYNA THEN OUTSTR(CVOS(CHN←GDDCHN(-1))&" IS THE DD CHANNEL"&'15&'12);
DDINIT; SCREEN(-1,-1,1,1);
DRKEN; RECTAN(-1,-1,1,1); LITEN;
FOR I←1 STEP 1 UNTIL (IF SYNA THEN PA0[BYBI] MIN 5 ELSE 1)DO
BEGIN
DRKEN; RECTAN(-1,-1,1,1);
K←PA0[BYBI]-I;
IF SYNA THEN VIDEO(-1,0,0,-1,PA0[0],2↑K) ELSE HAFTON(-1,0,0,-1,PA0[0]);
IF SYNA THEN VIDEO(0,0,1,-1,PB0[0],2↑K) ELSE HAFTON(0,0,1,-1,PB0[0]);
K←PA1[BYBI]-I;
IF SYNA THEN VIDEO(-.75,.5,-.25,0,PA1[0],2↑K)
ELSE HAFTON(-.75,.5,-.25,0,PA1[0]);
IF SYNA THEN VIDEO(.25,.5,.75,0,PB1[0],2↑K)
ELSE HAFTON(.25,.5,.75,0,PB1[0]);
K←PA2[BYBI]-I;
IF SYNA THEN VIDEO(-.625,.75,-.375,.5,PA2[0],2↑K)
ELSE HAFTON(-.625,.75,-.375,.5,PA2[0]);
IF SYNA THEN VIDEO(.375,.75,.625,.5,PB2[0],2↑K)
ELSE HAFTON(.375,.75,.625,.5,PB2[0]);
K←PA3[BYBI]-I;
IF SYNA THEN VIDEO(-.5525,.75,-.4375,.875,PA3[0],2↑K)
ELSE HAFTON(-.5525,.75,-.4375,.875,PA3[0]);
IF SYNA THEN VIDEO(.4375,.75,.5525,.875,PB3[0],2↑K)
ELSE HAFTON(.4375,.75,.5525,.875,PB3[0]);
K←PA4[BYBI]-I;
IF SYNA THEN VIDEO(-.52125,.875,-.46875,.9375,PA4[0],2↑K)
ELSE HAFTON(-.52125,.875,-.46875,.9375,PA4[0]);
IF SYNA THEN VIDEO(.46875,.875,.52125,.9375,PB4[0],2↑K)
ELSE HAFTON(.46875,.875,.52125,.9375,PB4[0]);
FOR J←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5-I) ELSE CHN);
IF ¬SYNA THEN SHOW(CHN) ELSE SHOW('47);
END;
BEGIN
INTEGER ARRAY INTER[-2:(HIG-1)%W-1,0:(WID-1)%W-1];
INTEGER ARRAY FEAT[1:2,1:2,1:100];
INTEGER ARRAY DD1[0:IF SYNA THEN 0 ELSE DDSIZ-1];
INTEGER NFEAT;
NFEAT←0;
IF SYNA THEN BEGIN DRKEN; RECTAN(-1,-1,1,1); LITEN; END;
IF SYNA THEN FOR J←1,2,3 DO DPYUP(SYNMAP(5));
IAV←INTRST(PA0[0],W,INTER[0,0]);
IF ¬SYNA THEN DDSTOR(DD1[0]);
FOR I←1 STEP 1 UNTIL (HIG-1)%W-2 DO
FOR J←1 STEP 1 UNTIL (WID-1)%W-2 DO
IF INTER[I,J]≥IAV ∧ (INTER[I,J] LAND 1)≠1 THEN
BEGIN
INTEGER IL,JL,IH,JH;
NFEAT←NFEAT+1;
IF SYNA THEN BEGIN DRKEN; RECTAN(-2,-2,2,2); LITEN; END
ELSE DDLOAD(DD1[0]);
FOR K←1 STEP 1 UNTIL NFEAT-1 DO
BEGIN
BOX(<FEAT[1,1,K]/WID-1>,<-FEAT[1,2,K]/HIG>,
<(FEAT[1,1,K]+W)/WID-1>,<-(FEAT[1,2,K]+W)/HIG>);
BOX(<FEAT[2,1,K]/WID>,<-FEAT[2,2,K]/HIG>,
<(FEAT[2,1,K]+W)/WID>,<-(FEAT[2,2,K]+W)/HIG>);
END;
FEAT[1,1,NFEAT]←J*W;
FEAT[1,2,NFEAT]←I*W;
BOX(<(J+1)*W/WID-1>,<-(I+1)*W/HIG>,<J*W/WID-1>,<-I*W/HIG>);
FOR K←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
IL←0; JL←0;
IH←HIG%16-1; JH←WID%16-1;
BOX1(<JL*16/WID>,<-IL*16/HIG>,<JH*16/WID>,<-IH*16/HIG>);
BOX1(<((J+.5)*W-16*W/2)/WID-1>,<-((I+.5)*W-16*W/2)/HIG>,
<((J+.5)*W+16*W/2)/WID-1>,<-((I+.5)*W+16*W/2)/HIG>);
FOR K←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
BSTCOR(PA4[0],(J+.5)*W/16-W/2,(I+.5)*W/16-W/2,(J+.5)*W/16+W/2,(I+.5)*W/16+W/2,
PB4[0],JL,IL,JH,IH);
IL←IL*2; JL←JL*2; IH←IH*2; JH←JH*2;
BOX1(<JL*8/WID>,<-IL*8/HIG>,<JH*8/WID>,<-IH*8/HIG>);
BOX1(<((J+.5)*W-8*W/2)/WID-1>,<-((I+.5)*W-8*W/2)/HIG>,
<((J+.5)*W+8*W/2)/WID-1>,<-((I+.5)*W+8*W/2)/HIG>);
FOR K←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
BSTCOR(PA3[0],(J+.5)*W/8-W/2,(I+.5)*W/8-W/2,(J+.5)*W/8+W/2,(I+.5)*W/8+W/2,
PB3[0],JL,IL,JH,IH);
IL←IL*2; JL←JL*2; IH←IH*2; JH←JH*2;
BOX1(<JL*4/WID>,<-IL*4/HIG>,<JH*4/WID>,<-IH*4/HIG>);
BOX1(<((J+.5)*W-4*W/2)/WID-1>,<-((I+.5)*W-4*W/2)/HIG>,
<((J+.5)*W+4*W/2)/WID-1>,<-((I+.5)*W+4*W/2)/HIG>);
FOR K←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
BSTCOR(PA2[0],(J+.5)*W/4-W/2,(I+.5)*W/4-W/2,(J+.5)*W/4+W/2,(I+.5)*W/4+W/2,
PB2[0],JL,IL,JH,IH);
IL←IL*2; JL←JL*2; IH←IH*2; JH←JH*2;
BOX1(<JL*2/WID>,<-IL*2/HIG>,<JH*2/WID>,<-IH*2/HIG>);
BOX1(<((J+.5)*W-2*W/2)/WID-1>,<-((I+.5)*W-2*W/2)/HIG>,
<((J+.5)*W+2*W/2)/WID-1>,<-((I+.5)*W+2*W/2)/HIG>);
FOR K←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
BSTCOR(PA1[0],(J+.5)*W/2-W/2,(I+.5)*W/2-W/2,(J+.5)*W/2+W/2,(I+.5)*W/2+W/2,
PB1[0],JL,IL,JH,IH);
IL←IL*2; JL←JL*2; IH←IH*2; JH←JH*2;
BOX1(<JL*1/WID>,<-IL*1/HIG>,<JH*1/WID>,<-IH*1/HIG>);
BOX1(<((J+.5)*W-1*W/2)/WID-1>,<-((I+.5)*W-1*W/2)/HIG>,
<((J+.5)*W+1*W/2)/WID-1>,<-((I+.5)*W+1*W/2)/HIG>);
FOR K←1,2,3 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
BSTCOR(PA0[0],(J+.5)*W/1-W/2,(I+.5)*W/1-W/2,(J+.5)*W/1+W/2,(I+.5)*W/1+W/2,
PB0[0],JL,IL,JH,IH);
FEAT[2,1,NFEAT]←JL;
FEAT[2,2,NFEAT]←IL;
BOX(<JL/WID>,<-IL/HIG>,<JH/WID>,<-IH/HIG>);
FOR K←1,2,3,4 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
IF LASTI≠"C" THEN LASTI←(INCHWL LAND '137);
END;
IF SYNA THEN BEGIN DRKEN; RECTAN(-2,-2,2,2); LITEN; END
ELSE DDLOAD(DD1[0]);
FOR K←1 STEP 1 UNTIL NFEAT DO
BEGIN
BOX(<FEAT[1,1,K]/WID-1>,<-FEAT[1,2,K]/HIG>,
<(FEAT[1,1,K]+W)/WID-1>,<-(FEAT[1,2,K]+W)/HIG>);
BOX(<FEAT[2,1,K]/WID>,<-FEAT[2,2,K]/HIG>,
<(FEAT[2,1,K]+W)/WID>,<-(FEAT[2,2,K]+W)/HIG>);
END;
FOR K←1 STEP 1 UNTIL 4 DO DPYUP(IF SYNA THEN SYNMAP(5) ELSE CHN);
INCHWL;
IF ¬SYNA THEN RDDCHN(CHN);
END;
END;
END;